This invention relates generally to computer telephony, and more particularly to an application programming interface that supports computer telephone sets.
Well-known today are several advantages of integrating a general-purpose computer with a telephone. However, these advantages have not yet been fully realized because existing methods of supporting computer telephony produce problems for developers of computer telephone sets, for developers of telephony applications, and for the intended users of computer telephony.
Developers of computer telephone sets find that existing operating systems provide only low-level support for telephony. These operating systems may support the functionality of some basic input/output devices, such as a microphone, speaker, video camera, and video display, but do not provide the integrated functionality of a working telephone set. Thus, every computer telephone set developer must implement all of that functionality, which functionality includes not only support for dialing and for transmitting the voices of the call participants, but also the call model for the telephone set interface, that is, the full set of logical states that the telephone interface can assume and the transitions among those states. When the developer completes this arduous implementation task and presents the results in an application programming interface (API), that API is most often limited to supporting only the particular model of computer telephone set produced by the developer. By requiring that this implementation effort be duplicate by all developers of new computer telephone sets, existing methods of supporting computer telephony increase development costs.
As a further problem, developers of computer telephone sets put much of their call model logic into the telephone sets themselves, producing peripherals that are independently functioning devices with some connection to the host computer. Relatedly, computer telephone sets are often developed to use one particular technology for transporting voice to distant locations, be it a local area network connection, a connection to a wide area network (often Internet Protocol based), an Integrated Services Digital Network line, or a standard analog telephone line. Consequently, these peripherals are very complicated internally, expense to develop and support, and inflexible in the face of new developments in voice transport technology.
The promise of computer telephony does not end with providing a replacement for the simple telephone set. Applications, such as voice mail and interactive voice response systems, can be built to use computer telephone sets. However, current methods of supporting computer telephony present unique problems to the developers of these applications. Applications often must be written to accommodate the specific API provided by the developer of one computer telephone set and must be rewritten to run on other platforms. This again leads to duplication of development efforts and increased development costs.
As a further result of the duplication of efforts by developers of computer telephone sets and by developers of computer-telephony applications, users are often faced with similar looking devices that function in different and confusingly incompatible ways.
The above problems and shortcomings, and others, are addressed by the present invention, which can be understood by referring to the specification, drawings, and claims. In accordance with one aspect of the invention, a set of services is presented to computer telephony applications in the form of an API. This API standardizes the interactions between applications and telephone sets, unifies those interactions into a coherent whole, and simplifies the interactions by automatically performing common tasks.
A further aspect of the present invention provides to telephony applications a complete Telephone Manager service. By extending the telephony API, this aspect does once what each individual developer had to do before the invention, that is, it implements the entire call control functionality for a basic telephone. This helps application developers in two interrelated ways. First, this aspect of the invention provides a default call model. Computer telephony applications may be developed relying solely on the services provided by this aspect without demanding any special software implementation work by the developer. Second, call services may now be implemented independently of the underlying hardware devices. Application developers are free to concentrate their efforts on extending the basic call control model, again focusing on the truly new features their products provide.
These aspects help developers of computer telephone sets as well. Developers need no longer provide custom APIs to applications, knowing that the API provided by the operating system allows their new computer telephone sets to work with any telephony application. Also, with the operating system""s Telephone Manager providing intelligence for call control, signaling, and media processing, developers can remove much of the processing capability, and expense, from their products. Because the telephone sets need do no processing themselves, they are inexpensive to produce and do not require software upgrades. Finally, the API provides a universal link to the telephone sets which allows the host computer to completely support transporting voice to distant locations. Thus, developers of computer telephone sets are relieved of the complication of supporting any and all of the transport technologies currently in use. Their products no longer need to be upgraded or replaced when new transport technologies are introduced.